Confirmation of Personal Information from the Tax Registry of the Independent Public Revenue Authority
This guide describes how to use the SOAP Web Service provided by the Independent Authority for Public Revenue (AADE) for verifying the information of natural persons from the tax registry. It focuses on the method getAFMIdentificationExt, which performs verification based on the individual's AFM (Tax Identification Number). The guide includes required parameters, authentication, audit logging requirements, input/output examples, and technical details necessary for integration into client applications.
Introduction
This document outlines the required parameters and usage instructions for the SOAP Web Service provided by the Independent Authority for Public Revenue (AADE) for verifying individual information using the method getAFMIdentificationExt.
Functionality Description
This method is invoked by the client application to verify an individual's data based on their Tax Identification Number (AFM).
Parameters
A. Service Endpoint URLs
- Testing Environment:
https://test.gsis.gr/esbpilot/individualConfirmationService - Production Environment:
https://ked.gsis.gr/esb/individualConfirmationService
B. Client Application Authentication Details
Each request must include client authentication credentials (username and password) in the SOAP header:
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-1">
<wsse:Username>******</wsse:Username>
<wsse:Password Type='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText'>*******</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
C. Audit Record
Each request must include an Audit Record, which is a log record for all requests made to the GSIS Web Services:
Audit Record Fields:
auditTransactionId: Alphanumeric - transaction ID (e.g., "1", "2", etc.)auditTransactionDate: DateTime inyyyy-mm-ddThh:mm:ssZformat (e.g., "2025-04-28T10:08:24Z")auditProtocol: Alphanumeric - protocol number (e.g., "1123")auditUnit: Alphanumeric - description of the business unit (e.g., "DEDDIE")auditUserId: Alphanumeric - user ID (e.g., "1123")auditUserIp: IP address (e.g., "0.0.0.0")
getAFMIdentificationExt Call Structure
Sample Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ind="http://gsis.ggps.interoperability/IndividualConfirmationInterface">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-134F28397E84840D3F14484484569051">
<wsse:Username>YourUsername</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">YourPassword</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<ind:getAFMIdentificationExtRequest>
<auditRecord>
<auditTransactionId>1</auditTransactionId>
<auditTransactionDate>2024-08-01T15:26:24Z</auditTransactionDate>
<auditUnit>GSIS</auditUnit>
<auditProtocol>1</auditProtocol>
<auditUserId>user</auditUserId>
<auditUserIp>0.0.0.0</auditUserIp>
</auditRecord>
<getAFMIdentificationExtRecord>
<afm>137248864</afm>
</getAFMIdentificationExtRecord>
</ind:getAFMIdentificationExtRequest>
</soapenv:Body>
</soapenv:Envelope>
Sample Response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getAFMIdentificationExtResponse xmlns:ns2="http://gsis.ggps.interoperability/IndividualConfirmationInterface">
<getAFMIdentificationExtRecord>
<afm>137248864</afm>
<id>Ξ028947</id>
<idType>1</idType>
<name>ΓΕΩΡΓΙΑ</name>
<surname>ΠΑΠΑΓΕΡΑΣΙΜΟΥ</surname>
<surname2>ΚΛΗΡΟΝΟΜΟΥ</surname2>
<fname>ΠΑΝΤΕΛΗΣ</fname>
<mname>ΑΓΛΑΙΑ</mname>
<birthYear>26/10/1951</birthYear>
<msg>Ταυτοποιείται ορθώς</msg>
</getAFMIdentificationExtRecord>
<callSequenceId>10026083056</callSequenceId>
<callSequenceDate>2025-05-28T12:38:03.087+03:00</callSequenceDate>
<errorRecord/>
</ns2:getAFMIdentificationExtResponse>
</soap:Body>
</soap:Envelope>
Error Responses
| Error Code Name | Description |
|---|---|
| GEN_AUDIT_VALIDATION_INV_DATA_OR_UNAUTH_OPER | Unauthorized usage of username/password for this method |
| GEN_AUDIT_VALIDATION_INVALID_AUDIT_DATA | Audit record fields are invalid |
| GEN_INVALID_DATA | Invalid input fields (e.g., AFM missing) |
| GEN_COMMUNICATION_ERROR | Communication error with external service (contact support) |
| GEN_DATABASE_CONNECTION_ERROR | Database connection error (contact KED support) |
| GEN_GENERAL_ERROR | Undefined error (contact KED support) |
| GEN_AUTHORIZATION_MAX_OPEN_CALLS_EXCEEDED | Daily call limit exceeded |
Specific Method Errors (getAFMIdentificationExt)
| Error Code | Description |
|---|---|
| GEN_INVALID_DATA | The afm field is mandatory and cannot be empty |
| GEN_INVALID_DATA | The birthYear field is invalid |
| GEN_INVALID_DATA | The afm is not a valid Tax Identification Number |
Calling the Service with Python
You can use Python's requests and xmltodict libraries:
import requests
import xmltodict
response = requests.post(url=endpoint_url, data=xml)
response_dict = xmltodict.parse(response.text)
Where:
endpoint_urlis the appropriate URL (test or production)xmlis the request payload in XML format
